home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / INCLUDES / I3DEXLIT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  3.0 KB  |  66 lines

  1. /* $Id: I3DEXLIT.H 1.8 1996/09/27 19:10:02 ERIC-G-PC Exp $ */
  2. /*****************************************************************************\
  3. *                                                                             *
  4. * I3DExLit.h -     I3DExLightsource definition                                                  *
  5. *                                                                             *
  6. *           Copyright (c) 1995, Ray Dream, Inc. All rights reserved.          *
  7. *                                                                             *
  8. \*****************************************************************************/
  9.  
  10. #ifndef __I3DEXLIT__
  11. #define __I3DEXLIT__
  12.  
  13. #ifndef __I3DEX__
  14. #include "I3DEx.h"
  15. #endif
  16.  
  17.  
  18. //****** Globally Unique Ids *************************************************
  19.  
  20. DEFINE_GUID(IID_I3DExLightsource, 0xA930ED80L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  21.  
  22. /*****************************************************************************\
  23. *  I3DExLightsource                                                           *
  24. *                                                                             *
  25. *  Light Sources                                                              *
  26. *                                                                             *
  27. \*****************************************************************************/
  28.  
  29. typedef void (*ForEachShadowBufferCallback)(BOOLEAN lightType, TRANSFORM3D* transform, NUM3D halfAngle, void* priv);
  30.  
  31. #undef  INTERFACE
  32. #define INTERFACE   I3DExLightsource
  33.  
  34. DECLARE_INTERFACE_(I3DExLightsource, I3DExDataExchanger) {
  35.     // IUnknown methods
  36.   STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  37.   STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  38.   STDMETHOD_(ULONG, Release) (THIS) PURE;
  39.   
  40.     // I3DExtension methods
  41.     STDMETHOD_(I3DExtension*, Clone) (THIS) PURE;
  42.     STDMETHOD(ShellUtilitiesInit) (THIS_ IShUtilities* shellUtilities) PURE;
  43.  
  44.   // I3DExDataExchanger methods
  45.     STDMETHOD_(ExtensionDataMap*, GetExtensionDataMap) (THIS) PURE;
  46.     STDMETHOD_(void*, GetExtensionDataBuffer) (THIS) PURE;
  47.   STDMETHOD(ExtensionDataChanged) (THIS) PURE;
  48.   STDMETHOD(HandleEvent) (THIS_ ULONG sourceID) PURE;
  49.     STDMETHOD_(short, GetResID) (THIS) PURE;
  50.   
  51.   // I3DExLightsource methods
  52.     STDMETHOD(SetTransform) (THIS_ TRANSFORM3D* transform) PURE;
  53.     STDMETHOD(GetDirection) (THIS_ VECTOR3D* position, VECTOR3D* resultDirection, NUM3D* resultDistance) PURE;
  54.     STDMETHOD_(BOOLEAN, GetColor) (THIS_ VECTOR3D* position, VECTOR3D* direction, NUM3D distance, COLOR3D* result, BOOLEAN* callForShadowEffect) PURE;
  55.     
  56.     STDMETHOD_(BOOLEAN, IsVisibleInPerspective) (THIS) PURE;
  57.     STDMETHOD(ShadowEffect) (THIS_ NUM3D distance, COLOR3D* result) PURE;
  58.     STDMETHOD_(LightTraceElement*, GetNewTrace) (THIS_ short* nb) PURE;
  59.     STDMETHOD_(ULONG, GetPrimitiveID) (THIS) PURE;
  60.     STDMETHOD(ForEachShadowBuffer) (THIS_ ForEachShadowBufferCallback proc, void* priv) PURE;
  61.     STDMETHOD(GetLightParameter) (THIS_ long keyword, void* parameter) PURE;
  62.     };
  63.  
  64.  
  65. #endif
  66.